package storage

// Storage defines the interface for file storage operations
type Storage interface {
	// Upload uploads a file to storage and returns the file path/URL
	Upload(filename string, data []byte) (string, error)

	// Download downloads a file from storage
	Download(filepath string) ([]byte, error)

	// Delete deletes a file from storage
	Delete(filepath string) error

	// GetURL returns the public URL for a file
	GetURL(filepath string) (string, error)
}

// StorageType represents different storage types
type StorageType string

const (
	StorageTypeLocal   StorageType = "local"
	StorageTypeAliyun  StorageType = "aliyun"
	StorageTypeHuawei  StorageType = "huawei"
	StorageTypeTencent StorageType = "tencent"
	StorageTypeBaidu   StorageType = "baidu"
	StorageTypeAWS     StorageType = "aws"
	StorageTypeAzure   StorageType = "azure"
	StorageTypeQiniu   StorageType = "qiniu"
	StorageTypeGoogle  StorageType = "google"
	StorageTypeMinIO   StorageType = "minio"
)
